package com.cskaoyan.javase.overload._1basic;

/**
 * 为什么方法的重载要求形参列表不同?
 * Java中去调用一个方法,编译器会首先去看方法的名字,如果方法名相同的方法有多个,那就去看形参列表.所以方法名相同时,必须形参列表不同,才能够找到这个方法
 *
 * 如果方法的重载中,出现多种数据类型,在调用时一旦发现实参的自动类型转换,会去调用哪个呢?
 *
 * 在Java语言的设计当中,如果有多种结果能够同时匹配,优先选择最近的,称之为"就近原则"
 *
 * 但是就近原则很多时候会失效,当你也无法判断"谁更近"时,那么编译器自然也无法做出决定了,那么这样就会语法报错,强制让程序员进行修改
 *
 * @since 16:39
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // test(10L);

        // Ambiguous method call: both 'Demo.test(int, double)' and 'Demo.test(double, int)' match
        // test(1,1);
    }

    public static void test(int a, double b) {
    }

    public static void test(double a, int b) {
    }

    public static void test(int a) {

    }

    public static void test(float a) {

    }

    public static void test(double a) {

    }
}
